/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package modelo;

/**
 *
 * @author raul
 */
public interface IGestorModelo<T> {
    public void setModelo(T modelo);
    public void guardar();
    public void eliminar();
    public void actualizar();
    public void crearModelo();
    
    /**Utilizado para chequear si un objeto que se va a guardar ya existe en la BD.
     * 
     * @return true si no existe el objeto, ni siquiera fisicamente.
     * false si existe el objeto fisica o logicamente, es decir el objeto puede haber
     * sido eliminado logicamente seteando su estado a "ELIMINADO".
     */
    public boolean noExiste();
    
    /**Se invoca para prevenir que no se intente guardar un modelo que ya se
     * guardo antes
     * 
     * @return true si se puede guardar el objeto/modelo
     */    
    public boolean validaModelo();

    public void deshacerCambios();
}
